package com.easylinkin.linkappapi.security.service;

import com.easylinkin.core.tree.TreeSelect;
import com.easylinkin.linkappapi.security.entity.LinkappPrivilege;
import com.easylinkin.linkappapi.security.entity.LinkappRole;
import site.morn.boot.data.CrudService;

import java.util.Collection;
import java.util.List;
import java.util.TreeSet;

/**
 * 菜单权限服务
 *
 * @author tulinli
 * @since 0.1.1, 2019/4/19
 */
public interface LinkappPrivilegeService extends CrudService<LinkappPrivilege, Long> {

  List<TreeSelect> searchPrivilegeTree(Integer disabled);

  List<LinkappPrivilege> selectPrivilegeAll(LinkappPrivilege linkappPrivilege);

  /**
   * 获取当前登录用户的权限列表数据
   * @return
   */
  Collection<LinkappPrivilege> getCurrent();

  List<LinkappPrivilege> selectPrivilegeByRole(String roleId, Integer type);

  /**
   * @param userId    用户ID
   * @param type  PC和小程序类型区分, 0：PC端，1:小程序端
   * @return
   */
  TreeSet<LinkappPrivilege> selectPrivilegeByUser(String userId, Integer type);

  /**
   * 个性化权限树
   * @param string
   * @param type
   * @return
   */
  TreeSet<LinkappPrivilege> selectPrivilegeCustomByUser(String tenantId, String string, Integer type);

  void privilege2Role(LinkappRole role, List<LinkappPrivilege> privileges, Integer type);

  /**
   * 新增权限菜单
   * @param linkappPrivilege
   */
  void addPrivilege(LinkappPrivilege linkappPrivilege);

  /**
   * 修改权限菜单
   * @param linkappPrivilege
   */
  void updatePrivilege(LinkappPrivilege linkappPrivilege);

}
